// dao/userDao.js
// 实现与MySQL交互
var mysql = require('mysql');
var $conf = require('../conf/db');
// var $util = require('../util/util');
var $sql = require('./userSqlMapping');
var $token = require('../util/tokenUtil');
var $cookie = require('../util/cookieUtil.js');
// 使用连接池，提升性能
// var pool  = mysql.createPool($util.extend({}, $conf.mysql));
var pool = mysql.createPool({
  host     : '127.0.0.1',
  user     : 'root',
  password : 'ly1207',
  database : 'demo'
});
// 向前台返回JSON方法的简单封装
var jsonWrite = function (res, ret) {
	if(typeof ret === 'undefined') {
		res.json({
			code:'1',
			msg: '操作失败'
		});
	} else {
		res.json(ret);
	}
};

module.exports = {
	add: function (req, res, next) {
		pool.getConnection(function(err, connection) {
			// 获取前台页面传过来的参数
			var param = req.query || req.params;

			// 建立连接，向表中插入值
			// 'INSERT INTO user(id, name, age) VALUES(0,?,?)',
      console.log(param.name,param.age);
			connection.query($sql.insert, [param.name, param.password], function(err, result) {
				if(result) {
					result = {
						code: 200,
						msg:'增加成功'
					};
				}

				// 以json形式，把操作结果返回给前台页面
				jsonWrite(res, result);

				// 释放连接
				connection.release();
			});
		});
	},
  login: function (req, res, next) {
		pool.getConnection(function(err, connection) {
			// 获取前台页面传过来的参数
			
			var param = req.body;
			// 建立连接，向表中插入值
			connection.query($sql.queryByName, param.name, function(err, result) {
        console.log(result);
        if (result) {
          if (result[0].password === param.password) {
            let token = $token.createToken(result[0].id);
            res.cookie('token',token);

            result = {
              code:'success',
              data:{
                token:token
              },
              msg:'成功'
            }

          }else {
            result = {
              code:'error',
              data:false,
              msg:'密码错误'
            }
          }
        }
				// 以json形式，把操作结果返回给前台页面
				jsonWrite(res, result);

				// 释放连接
				connection.release();
			});
		});
	},
  addImage: function (fileName, res, next) {
		pool.getConnection(function(err, connection) {

      var sql = 'update user set avater_img_path=? where id=1'
      let path = `images/user/${fileName}`
        console.log(path);
			connection.query(sql, path, function(err, result) {
        if (result) {
          result = {
						code: 200,
						msg:'增加成功'
					};
        }
				// 以json形式，把操作结果返回给前台页面
				jsonWrite(res, result);

				// 释放连接
				connection.release();
			});
		});
	},
  list: function (req, res, next) {
		pool.getConnection(function(err, connection) {
			// 获取前台页面传过来的参数
			var param = req.query || req.params;
			// 建立连接，向表中插入值
      // $token.verifyToken(req, res, next);
      // let cookie = $cookie(req.headers.cookie);

			connection.query($sql.queryById, req.decode.userId, function(err, result) {

        if (result) {
            result = {
              code:'success',
              data:result[0],
              msg:'成功'
            }

        }
				// 以json形式，把操作结果返回给前台页面
				jsonWrite(res, result);

				// 释放连接
				connection.release();
			});
		});
	},
    update: function (req, res, next) {
        pool.getConnection(function(err, connection) {
            // 获取前台页面传过来的参数
            var param = req.body;
            // 建立连接，向表中插入值
            connection.query($sql.update, [param.nickName, param.email, param.git, req.decode.userId], function(err, result) {

                if (result) {
                    result = {
                        code:'success',
                        data:result[0],
                        msg:'成功'
                    }

                }
                // 以json形式，把操作结果返回给前台页面
                jsonWrite(res, result);

                // 释放连接
                connection.release();
            });
        });
    }
};
